home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-19 / iritsm3s.zip / B58.IRT < prev    next >
Text File  |  1991-11-17  |  15KB  |  459 lines

  1. #
  2. # A model of the B58 Bomber.
  3. #
  4. #
  5. #            Gershon Elber, October 1991.
  6. #
  7.  
  8. resolution = 10;
  9. if ( machine, "=", msdos, (resolution = 8));
  10.  
  11. save_mat = view_mat;
  12. view_mat = view_mat
  13.            * trans( vector( 5.0, 2.0, 0.0 ) )
  14.        * scale( vector( 0.15, 0.15, 0.15 ) );
  15.  
  16. #
  17. # Set up for colored or wood texture version. set do_texture to 1 for
  18. # wood version, otherwise color version. Note locally (in irit) it will
  19. # always be displayed in colors.
  20. #
  21. do_texture = 0;
  22.  
  23. redcolor = "255,0,0";
  24. graycolor = "70,70,70";
  25. whitecolor = "255,255,255";
  26. blackcolor = "10,10,10";
  27.  
  28. woodcolor = "244,164,96";
  29. texture = "wood";
  30. if ( do_texture, "=", 1,
  31.      ( ( redcolor = woodcolor ):
  32.        ( graycolor = woodcolor ):
  33.        ( whitecolor = woodcolor ):
  34.        ( blackcolor = woodcolor )
  35.      )
  36.    );
  37.  
  38. #
  39. # First Lets create the fuselage.
  40. #
  41.  
  42. #
  43. # Front part of the fuselage:
  44. #
  45. c1 = circle( vector( 0.0, 0.0, 0.0 ), 0.01 ) *
  46.      roty( 90 ) *
  47.      trans( vector( -1.0, 0.0, 0.1 ) );
  48. color( c1, green );
  49. c2 = circle( vector( 0.0, 0.0, 0.0 ), 0.025 ) *
  50.      roty( 90 ) *
  51.      trans( vector( 0.0, 0.0, 0.1 ) );
  52. color( c2, green );
  53. c3 = circle( vector( 0.0, 0.0, 0.0 ), 0.03 ) *
  54.      roty( 90 ) *
  55.      trans( vector( 0.1, 0.0, 0.1 ) );
  56. color( c3, green );
  57. c4 = cbspline( 3,
  58.            list( ctlpt( P3, 1,     2.5,   0.0,   -0.1 ),
  59.              ctlpt( P3, 0.707, 1.77,  0.283, -0.071 ),
  60.              ctlpt( P3, 1,     2.5,   0.4,    0.0 ),
  61.              ctlpt( P3, 0.707, 1.77,  0.283,  0.283 ),
  62.              ctlpt( P3, 1,     2.5,   0.0,    0.4 ),
  63.              ctlpt( P3, 0.707, 1.77, -0.283,  0.283 ),
  64.              ctlpt( P3, 1,     2.5,  -0.4,    0.0 ),
  65.              ctlpt( P3, 0.707, 1.77, -0.283, -0.071 ),
  66.              ctlpt( P3, 1,     2.5,   0.0,   -0.1 ) ),
  67.            list( 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4 ) ) *
  68.      trans( vector( -1.5, 0.0, 0.0 ) );
  69. color( c4, green );
  70. c5 = cbspline( 3,
  71.            list( ctlpt( P3, 1,     2.5,   0.0,   -0.1 ),
  72.              ctlpt( P3, 0.707, 1.77,  0.283, -0.071 ),
  73.              ctlpt( P3, 1,     2.5,   0.4,    0.0 ),
  74.              ctlpt( P3, 0.707, 1.77,  0.283,  0.6 ),
  75.              ctlpt( P3, 1,     2.5,   0.0,    0.5 ),
  76.              ctlpt( P3, 0.707, 1.77, -0.283,  0.6 ),
  77.              ctlpt( P3, 1,     2.5,  -0.4,    0.0 ),
  78.              ctlpt( P3, 0.707, 1.77, -0.283, -0.071 ),
  79.              ctlpt( P3, 1,     2.5,   0.0,   -0.1 ) ),
  80.            list( 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4 ) ) *
  81.      trans( vector( 0.0, 0.0, 0.0 ) );
  82. color( c5, green );
  83.  
  84. fuseFront = sFromCrvs( list( c1, c2, c3, c4, c5 ) );
  85. if ( do_texture, "=", 1, ( attrib( fuseFront, "texture", texture ) ) );
  86. attrib( fuseFront, "rgb", blackcolor );
  87. color( fuseFront, yellow );
  88.  
  89. #
  90. # Back part of the fuselage:
  91. #
  92. c1 = cbspline( 3,
  93.            list( ctlpt( P3, 1,     2.5,   0.0,   -0.1 ),
  94.              ctlpt( P3, 0.707, 1.77,  0.283, -0.071 ),
  95.              ctlpt( P3, 1,     2.5,   0.4,    0.0 ),
  96.              ctlpt( P3, 0.707, 1.77,  0.283,  0.566 ),
  97.              ctlpt( P3, 1,     2.5,   0.0,    0.8 ),
  98.              ctlpt( P3, 0.707, 1.77, -0.283,  0.566 ),
  99.              ctlpt( P3, 1,     2.5,  -0.4,    0.0 ),
  100.              ctlpt( P3, 0.707, 1.77, -0.283, -0.071 ),
  101.              ctlpt( P3, 1,     2.5,   0.0,   -0.1 ) ),
  102.            list( 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4 ) ) *
  103.      trans( vector( 0.0, 0.0, 0.0 ) );
  104. color( c1, red );
  105. c2 = c1 * scale( vector( 1.05, 1.05, 1.05 ) ) *
  106.           trans( vector( 0.3, 0.0, 0.0 ) );
  107. color( c2, red );
  108. c3 = c1 * scale( vector( 0.95, 0.95, 0.95 ) ) *
  109.       trans( vector( 1.7, 0.0, -0.02 ) );
  110. color( c3, red );
  111. c4 = circle( vector( 0.0, 0.0, 0.0 ), 0.35 ) *
  112.      roty( 90 ) *
  113.      trans( vector( 5.0, 0.0, 0.2 ) );
  114. color( c4, red );
  115. c5 = c4 * trans( vector( 0.2, 0.0, 0.0 ) );
  116. color( c5, red );
  117. c6 = circle( vector( 0.0, 0.0, 0.0 ), 0.3 ) *
  118.      roty( 90 ) *
  119.      trans( vector( 10.5, 0.0, 0.2 ) );
  120. color( c6, red );
  121. c7 = circle( vector( 0.0, 0.0, 0.0 ), 0.01 ) *
  122.      roty( 90 ) *
  123.      trans( vector( 11.0, 0.0, 0.25 ) );
  124. color( c7, red );
  125.  
  126. fuseBack = sFromCrvs( list( c1, c2, c3, c4, c5, c6, c7 ) );
  127. if ( do_texture, "=", 1, ( attrib( fuseBack, "texture", texture ) ) );
  128. attrib( fuseBack, "rgb", graycolor );
  129. color( fuseBack, white );
  130.  
  131. #
  132. # The cockpit:
  133. #
  134. cock1 = cregion( c1, 1.3, 2.7 );
  135. color( cock1, yellow );
  136. cock2 = cock1 * scale( vector( 0.9, 0.9, 1.1 ) ) *
  137.             trans( vector( -0.35, 0.0, -0.15 ) );
  138. color( cock2, yellow );
  139. cock3 = cock1 * scale( vector( 0.01, 0.01, 0.01 ) ) *
  140.             trans( vector( 1.4, 0.0, 0.38 ) );
  141. color( cock3, yellow );
  142.  
  143. cockpit = sFromCrvs( list( cock1, cock2, cock3 ) );
  144. if ( do_texture, "=", 1, ( attrib( cockpit, "texture", texture ) ) );
  145. attrib( cockpit, "rgb", whitecolor );
  146. color( cockpit, white );
  147.  
  148. free( cock1 ); free( cock2 ); free( cock3 ); free( cock4 );
  149. free( c1 ); free( c2 ); free( c3 ); free( c4 );
  150. free( c5 ); free( c6 ); free( c7 );
  151.  
  152. #
  153. # Now create the steering (vertical) tail.
  154. #
  155. c1 = ( cbspline( 3,
  156.              list( ctlpt( E3, 0.0,  0.0,  0.0 ),
  157.                ctlpt( E3, 0.0,  0.02, 0.0 ),
  158.                ctlpt( E3, 1.5,  0.07, 0.0 ),
  159.                ctlpt( E3, 3.0,  0.0,  0.0 ) ),
  160.              list( KV_OPEN ) ) +
  161.        cbspline( 3,
  162.              list( ctlpt( E3, 3.0,  0.0, 0.0 ),
  163.                ctlpt( E3, 1.5, -0.07, 0.0 ),
  164.                ctlpt( E3, 0.0, -0.02, 0.0 ),
  165.                ctlpt( E3, 0.0,  0.0,  0.0 ) ),
  166.              list( KV_OPEN ) ) ) *
  167.      trans( vector( 7.7, 0.0, 0.3 ) );
  168. c2 = c1 * scale( vector( 0.65, 0.65, 0.65 ) )
  169.     * trans( vector( 3.75, 0.0, 0.4 ) );
  170. c3 = c1 * scale( vector( 0.16, 0.16, 0.16 ) )
  171.     * trans( vector( 9.5, 0.0, 2.0 ) );
  172. vTail1 = ruledsrf( c1, c2 );
  173. vTail2 = ruledsrf( c2, c3 );
  174. if ( do_texture, "=", 1, ( attrib( vTail1, "texture", texture ) ) );
  175. attrib( vTail1, "rgb", redcolor );
  176. color( vTail1, red );
  177. if ( do_texture, "=", 1, ( attrib( vTail2, "texture", texture ) ) );
  178. attrib( vTail2, "rgb", redcolor );
  179. color( vTail2, red );
  180.  
  181. vTailTop = sweepsrf( circle( vector( 0.0, 0.0, 0.0 ), 0.1 ),
  182.              cbezier( list( ctlpt( E3, 10.732, 0.0, 2.048 ),
  183.                     ctlpt( E3, 10.972, 0.0, 2.048 ),
  184.                     ctlpt( E3, 11.212, 0.0, 2.048 ) ) ),
  185.              cbezier( list( ctlpt( E2, 0.0, 0.01 ),
  186.                     ctlpt( E2, 0.5, 1.0 ),
  187.                     ctlpt( E2, 1.0, 0.01 ) ) ) );
  188. if ( do_texture, "=", 1, ( attrib( vTailTop, "texture", texture ) ) );
  189. attrib( vTailTop, "rgb", redcolor );
  190. color( vTailTop, red );
  191.  
  192. vTailPara = sweepsrf( circle( vector( 0.0, 0.0, 0.0 ), 0.075 ),
  193.               cbspline( 3,
  194.                 list( ctlpt( E3, 9.15,  0.0, 0.6 ),
  195.                       ctlpt( E3, 9.5,   0.0, 0.6 ),
  196.                       ctlpt( E3, 9.9,   0.0, 0.6 ),
  197.                       ctlpt( E3, 10.7,  0.0, 0.6 ),
  198.                       ctlpt( E3, 10.8,  0.0, 0.6 ),
  199.                       ctlpt( E3, 10.85, 0.0, 0.6 ),
  200.                       ctlpt( E3, 10.9,  0.0, 0.6 ) ),
  201.                 list(KV_OPEN) ),
  202.               cbspline( 3,
  203.                 list( ctlpt( E2, 0.0,  0.01 ),
  204.                       ctlpt( E2, 0.01,  1.0 ),
  205.                       ctlpt( E2, 0.5,  1.0 ),
  206.                       ctlpt( E2, 0.7,  1.0 ),
  207.                       ctlpt( E2, 1.0 , 0.01 ) ),
  208.                 list(KV_OPEN) ) );
  209. if ( do_texture, "=", 1, ( attrib( vTailPara, "texture", texture ) ) );
  210. attrib( vTailPara, "rgb", graycolor );
  211. color( vTailPara, white );
  212.  
  213. VTailAntn = surfrev( ctlpt( E3, 0.001, 0.0, 1.0 ) +
  214.              ctlpt( E3, 0.01,  0.0, 1.0 ) +
  215.              ctlpt( E3, 0.01,  0.0, 0.8 ) +
  216.              ctlpt( E3, 0.03,  0.0, 0.7 ) +
  217.              ctlpt( E3, 0.03,  0.0, 0.3 ) +
  218.              ctlpt( E3, 0.001, 0.0, 0.0 ) )
  219.         * scale( vector( 0.5, 0.5, 0.7 ) )
  220.         * roty( -90 )
  221.         * trans( vector( 10.8, 0.0, 1.9 ) );
  222. if ( do_texture, "=", 1, ( attrib( vTailAntn, "texture", texture ) ) );
  223. attrib( vTailAntn, "rgb", redcolor );
  224. color( vTailAntn, red );
  225.  
  226. vTail = list( VTail1, VTail2, VTailTop, VTailPara, VTailAntn);
  227.  
  228. #
  229. # Here are the wings:
  230. #
  231. c1 = cbspline( 3,
  232.            list( ctlpt( E3, 3.3, 0.0,  0.1 ),
  233.              ctlpt( E3, 3.7, 0.0,  0.3 ),
  234.              ctlpt( E3, 4.4, 0.0,  0.3 ),
  235.              ctlpt( E3, 9.0, 0.0, -0.1 ) ),
  236.            list( KV_OPEN ) ) +
  237.      cbspline( 3,
  238.            list( ctlpt( E3, 9.0, 0.0, -0.1 ),
  239.              ctlpt( E3, 6.0, 0.0, -0.1 ),
  240.              ctlpt( E3, 3.3, 0.0,  0.1 ) ),
  241.            list( KV_OPEN ) );
  242. c2 = c1
  243.      * scale( vector( 0.02, 0.02, 0.02) )
  244.      * trans( vector( 8.4, 3.3, -0.1 ) );
  245.  
  246. lWingMain = ruledsrf( c1,c2 );
  247. lWingCntr = sregion( lWingMain, ROW, 0.0, 0.78 );
  248. if ( do_texture, "=", 1, ( attrib( lWingCntr, "texture", texture ) ) );
  249. attrib( lWingCntr, "rgb", graycolor );
  250. color( lWingCntr, white );
  251. lWingEnd = sregion( lWingMain, ROW, 0.78, 1.0);
  252. if ( do_texture, "=", 1, ( attrib( lWingEnd, "texture", texture ) ) );
  253. attrib( lWingEnd, "rgb", redcolor );
  254. color( lWingEnd, red );
  255.  
  256. rWingMain = lWingMain 
  257.         * scale( vector(1.0, -1.0, 1.0));
  258. rWingCntr = sregion( rWingMain, ROW, 0.0, 0.78);
  259. if ( do_texture, "=", 1, ( attrib( rWingCntr, "texture", texture ) ) );
  260. attrib( rWingCntr, "rgb", graycolor );
  261. color( rWingCntr, white );
  262. rWingEnd = sregion( rWingMain, ROW, 0.78, 1.0);
  263. if ( do_texture, "=", 1, ( attrib( rWingEnd, "texture", texture ) ) );
  264. attrib( rWingEnd, "rgb", redcolor );
  265. color( rWingEnd, red );
  266.  
  267. Wings = list( lWingCntr, lWingEnd, rWingCntr, rWingEnd);
  268. free( c1 ); free( c2 );
  269.  
  270. #
  271. # Make the four engines:
  272. #
  273. c1 = cbspline( 3,
  274.            list( ctlpt( E3, 0.0,  0.0, 0.0 ),
  275.              ctlpt( E3, 0.17, 0.0, 0.3 ),
  276.              ctlpt( E3, 0.17, 0.0, 0.6 ) ),
  277.            list( KV_OPEN ) ) +
  278.      ctlpt( E3, 0.25, 0.0, 0.6 ) +
  279.      cbspline( 3,
  280.            list( ctlpt( E3, 0.25, 0.0, 0.1 ),
  281.              ctlpt( E3, 0.35, 0.0, 0.6 ),
  282.              ctlpt( E3, 0.3,  0.0, 2.5 ),
  283.              ctlpt( E3, 0.25, 0.0, 3.0 ) ),
  284.           list( KV_OPEN ) ) +
  285.      ctlpt( E3, 0.25, 0.0, 2.0 ) +
  286.      ctlpt( E3, 0.1,  0.0, 2.0 ) +
  287.      ctlpt( E3, 0.0, 0.0,  2.3 );
  288.  
  289. EngineIns = surfrev( c1 ) * roty( 90 );
  290. color(EngineIns, blue);
  291.  
  292. Eng1Body = EngineIns * trans( vector( 3.2,  1.5, -0.7 ) );
  293. if ( do_texture, "=", 1, ( attrib( Eng1Body, "texture", texture ) ) );
  294. attrib( Eng1Body, "rgb", graycolor );
  295. color( Eng1Body, white );
  296.  
  297. Eng2Body = EngineIns * trans( vector(5.8,  2.6, -0.5));
  298. if ( do_texture, "=", 1, ( attrib( Eng2Body, "texture", texture ) ) );
  299. attrib( Eng2Body, "rgb", graycolor );
  300. color( Eng2Body, white );
  301.  
  302. c1 = cbspline( 3,
  303.            list( ctlpt( E3, 0.0,  0.0,  0.0 ),
  304.              ctlpt( E3, 0.5,  0.07, 0.0 ),
  305.              ctlpt( E3, 1.0,  0.0,  0.0 ) ),
  306.            list( KV_OPEN ) ) +
  307.      cbspline( 3,
  308.            list( ctlpt( E3, 1.0,  0.0,  0.0 ),
  309.              ctlpt( E3, 0.5, -0.07, 0.0 ),
  310.              ctlpt( E3, 0.0,  0.0,  0.0 ) ),
  311.            list( KV_OPEN ) );
  312.  
  313. Eng1c1 = c1
  314.          * scale( vector( 2.5, 1.0, 2.5))
  315.          * trans( vector( 3.45, 1.5, -0.44));
  316. Eng2c1 = c1
  317.          * scale( vector( 1.7, 1.0, 1.7 ) )
  318.          * trans( vector( 6.8, 2.6, -0.24 ) );
  319.  
  320. #
  321. # The extraction of the wing profiles just above the engines to make
  322. # sure the engine holder do not over/under shoot. The commented interaction
  323. # commands below will display the relevat curves of teh engine holder.
  324. #
  325. wingProf1 = csurface( lwingMain, ROW, 0.4 );
  326. color(wingProf1, green);
  327. wingProf2 = csurface( lwingMain, ROW, 0.78 );
  328. color(wingProf2, green);
  329. Eng1c2 = c1
  330.      * roty( 3 )
  331.          * scale( vector( 2.0, 1.0, 2.5 ) )
  332.          * trans( vector (5.55, 1.5, 0.1 ) );
  333. # interact( list( Eng1Body, Eng1c1, Eng1c2, Eng1Holder, wingProf1 ),0 );
  334. Eng2c2 = c1
  335.      * roty( 3.5 )
  336.          * scale( vector( 1.2, 1.0, 1.2 ) )
  337.          * trans( vector(7.4, 2.6, -0.03 ) );
  338. # interact( list( Eng2Body, Eng2c1, Eng2c2, wingProf2 ),0 );
  339.  
  340. Eng1Holder = ruledsrf( Eng1c1, Eng1c2 );
  341. if ( do_texture, "=", 1, ( attrib( Eng1Holder, "texture", texture ) ) );
  342. attrib( Eng1Holder, "rgb", graycolor );
  343. color( Eng1Holder, white );
  344.  
  345. Eng2Holder = ruledsrf( Eng2c1, Eng2c2 );
  346. if ( do_texture, "=", 1, ( attrib( Eng2Holder, "texture", texture ) ) );
  347. attrib( Eng2Holder, "rgb", graycolor );
  348. color( Eng2Holder, white );
  349.  
  350. free( wingProf1 ); free( wingProf2 );
  351. free( Eng1c1); free( Eng1c2 ); free( Eng2c1 ); free( Eng2c2 ); free( c1 );
  352.  
  353. Engine1 = list( Eng1Body, Eng1Holder );
  354. Engine2 = list( Eng2Body, Eng2Holder );
  355. Engine3 = Engine1 * scale( vector( 1.0, -1.0, 1.0 ) );
  356. Engine4 = Engine2 * scale( vector( 1.0, -1.0, 1.0 ) );
  357.  
  358. Engines = list( Engine1, Engine2, Engine3, Engine4 );
  359.  
  360. #
  361. # Model the gas tank.
  362. #
  363. tankBody = sweepsrf( circle( vector( 0.0, 0.0, 0.0 ), 0.3 ),
  364.              cbspline( 3,
  365.                    list( ctlpt( E3, 1.5,  0.0, -0.5 ),
  366.                      ctlpt( E3, 2.5,  0.0, -0.5 ),
  367.                      ctlpt( E3, 3.5,  0.0, -0.5 ),
  368.                      ctlpt( E3, 6.0,  0.0, -0.5 ),
  369.                      ctlpt( E3, 7.5,  0.0, -0.5 ) ),
  370.                    list( KV_OPEN ) ),
  371.              cbspline( 3,
  372.                    list( ctlpt( E2, 0.0,   0.01 ),
  373.                      ctlpt( E2, 0.01,  1.0 ),
  374.                      ctlpt( E2, 0.5,   1.0 ),
  375.                      ctlpt( E2, 0.9,   1.0 ),
  376.                      ctlpt( E2, 1.0 ,  0.01 ) ),
  377.                    list( KV_OPEN ) ) );
  378. if ( do_texture, "=", 1, ( attrib( tankBody, "texture", texture ) ) );
  379. attrib( tankBody, "rgb", graycolor );
  380. color( tankBody, white );
  381.  
  382. c1 = cbspline( 3,
  383.            list( ctlpt( E3, 0.0,  0.0,  0.0 ),
  384.              ctlpt( E3, 0.0,  0.01, 0.0 ),
  385.              ctlpt( E3, 0.5,  0.02, 0.0 ),
  386.              ctlpt( E3, 1.0,  0.0,  0.0 ) ),
  387.            list( KV_OPEN ) ) +
  388.      cbspline( 3,
  389.            list( ctlpt( E3, 1.0,  0.0,  0.0 ),
  390.              ctlpt( E3, 0.5, -0.02, 0.0 ),
  391.              ctlpt( E3, 0.0, -0.01, 0.0 ),
  392.              ctlpt( E3, 0.0,  0.0,  0.0 ) ),
  393.            list( KV_OPEN ) );
  394. tankWIns = ruledsrf( c1,
  395.              c1
  396.                      * scale( vector( 0.01, 0.01, 0.01 ) )
  397.                      * trans( vector( 0.99, 0.0, 0.56 ) ) );
  398. if ( do_texture, "=", 1, ( attrib( tankWIns, "texture", texture ) ) );
  399. attrib( tankWIns, "rgb", graycolor );
  400. color( tankWIns, white );
  401.  
  402. tankWing1 = tankWIns * rotx(45) * trans( vector( 6.2, 0.0, -0.5 ) );
  403. tankWing2 = tankWIns * rotx(135) * trans( vector( 6.2, 0.0, -0.5 ) );
  404. tankWing3 = tankWIns * rotx(225) * trans( vector( 6.2, 0.0, -0.5 ) );
  405. tankWing4 = tankWIns * rotx(315) * trans( vector( 6.2, 0.0, -0.5 ) );
  406.  
  407. tankHolder = ruledsrf( c1
  408.                * scale( vector( 5.2, 5.2, 1.0 ) )
  409.                * trans( vector( 1.8, 0.0, -0.5 ) ),
  410.                c1
  411.                * scale( vector( 4.0, 5.2, 1.0 ) )
  412.                * trans( vector( 2.7, 0.0, 0.1 ) ) );
  413. if ( do_texture, "=", 1, ( attrib( tankHolder, "texture", texture ) ) );
  414. attrib( tankHolder, "rgb", graycolor );
  415. color( tankHolder, white );
  416.  
  417. tank = list( tankBody, tankHolder, tankWing1, tankWing2, tankWing3, tankWing4 );
  418.  
  419. #
  420. # Collect all, display and save.
  421. #
  422. b58 = list( fuseFront, fuseback, cockpit, Wings, vTail, Engines, tank );
  423. interact( b58, 0 );
  424. view_mat = rotx( 0 ); # Make it a unit matrix.
  425. save( "b58", list( view_mat, b58 ) );
  426.  
  427. #
  428. # Make walls for shadows.
  429. #
  430. v1 = vector( 0.0, 0.0, 0.0 );
  431. v2 = vector( 0.0, 1.0, 0.0 );
  432. v3 = vector( 1.0, 1.0, 0.0 );
  433. v4 = vector( 1.0, 0.0, 0.0 );
  434. xy_plane = poly( list( v1, v2, v3, v4 ) );
  435. color( xy_plane, white );
  436. attrib( xy_plane, "rgb", "100,100,100" );
  437.  
  438. v1 = vector( 0.0, 0.0, 0.0 );
  439. v2 = vector( 0.0, 0.0, 1.0 );
  440. v3 = vector( 1.0, 0.0, 1.0 );
  441. v4 = vector( 1.0, 0.0, 0.0 );
  442. xz_plane = poly( list( v1, v2, v3, v4 ) );
  443. color( xz_plane, white );
  444. attrib( xz_plane, "rgb", "100,100,100" );
  445.  
  446. v1 = vector( 0.0, 0.0, 0.0 );
  447. v2 = vector( 0.0, 0.0, 1.0 );
  448. v3 = vector( 0.0, 1.0, 1.0 );
  449. v4 = vector( 0.0, 1.0, 0.0 );
  450. yz_plane = poly( list( v1, v2, v3, v4 ) );
  451. color( yz_plane, white );
  452. attrib( yz_plane, "rgb", "100,100,100" );
  453. walls = list( xy_plane, xz_plane, yz_plane )
  454.     * scale( vector( 100.0, 100.0, 100.0 ) )
  455.     * trans( vector( -3.0, -5.0, -3.0 ) );
  456. save( "b58walls", walls );
  457.  
  458. exit();
  459.